Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
vnf-onboarding
OSM Packages
Commits
17583c8b
Commit
17583c8b
authored
Nov 30, 2020
by
Mark Beierl
Browse files
Merge branch 'master' into 'master'
Update squid charm See merge request
!105
parents
e2197769
9c012576
Pipeline
#143
passed with stage
in 1 minute and 34 seconds
Changes
160
Pipelines
2
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
12 additions
and
931 deletions
+12
-931
magma/squid_cnf/charms/squid/actions/addurl
magma/squid_cnf/charms/squid/actions/addurl
+0
-13
magma/squid_cnf/charms/squid/config.yaml
magma/squid_cnf/charms/squid/config.yaml
+1
-5
magma/squid_cnf/charms/squid/dispatch
magma/squid_cnf/charms/squid/dispatch
+3
-0
magma/squid_cnf/charms/squid/hooks/install
magma/squid_cnf/charms/squid/hooks/install
+1
-1
magma/squid_cnf/charms/squid/hooks/start
magma/squid_cnf/charms/squid/hooks/start
+1
-0
magma/squid_cnf/charms/squid/hooks/upgrade-charm
magma/squid_cnf/charms/squid/hooks/upgrade-charm
+1
-0
magma/squid_cnf/charms/squid/lib/.empty
magma/squid_cnf/charms/squid/lib/.empty
+0
-0
magma/squid_cnf/charms/squid/lib/ops/__init__.py
magma/squid_cnf/charms/squid/lib/ops/__init__.py
+0
-18
magma/squid_cnf/charms/squid/lib/ops/charm.py
magma/squid_cnf/charms/squid/lib/ops/charm.py
+0
-562
magma/squid_cnf/charms/squid/lib/ops/log.py
magma/squid_cnf/charms/squid/lib/ops/log.py
+0
-47
magma/squid_cnf/charms/squid/lib/ops/model.py
magma/squid_cnf/charms/squid/lib/ops/model.py
+0
-0
magma/squid_cnf/charms/squid/metadata.yaml
magma/squid_cnf/charms/squid/metadata.yaml
+5
-4
magma/squid_cnf/charms/squid/mod/.empty
magma/squid_cnf/charms/squid/mod/.empty
+0
-0
magma/squid_cnf/charms/squid/mod/operator/.flake8
magma/squid_cnf/charms/squid/mod/operator/.flake8
+0
-2
magma/squid_cnf/charms/squid/mod/operator/.gitignore
magma/squid_cnf/charms/squid/mod/operator/.gitignore
+0
-4
magma/squid_cnf/charms/squid/mod/operator/.readthedocs.yaml
magma/squid_cnf/charms/squid/mod/operator/.readthedocs.yaml
+0
-7
magma/squid_cnf/charms/squid/mod/operator/.travis.yml
magma/squid_cnf/charms/squid/mod/operator/.travis.yml
+0
-24
magma/squid_cnf/charms/squid/mod/operator/README.md
magma/squid_cnf/charms/squid/mod/operator/README.md
+0
-137
magma/squid_cnf/charms/squid/mod/operator/build_docs
magma/squid_cnf/charms/squid/mod/operator/build_docs
+0
-18
magma/squid_cnf/charms/squid/mod/operator/docs/conf.py
magma/squid_cnf/charms/squid/mod/operator/docs/conf.py
+0
-89
No files found.
magma/squid_cnf/charms/squid/actions/addurl
deleted
100755 → 0
View file @
e2197769
#!/bin/bash
URL
=
`
action-get url
`
if
!
grep
-Fxq
"http_access allow allowedurls"
/etc/squid/squid.conf
then
sed
-i
'/^# And finally deny all .*/i http_access allow allowedurls\n'
/etc/squid/squid.conf
fi
sed
-i
"/^http_access allow allowedurls.*/i acl allowedurls dstdomain
\.
$URL
"
/etc/squid/squid.conf
kill
-HUP
`
cat
/var/run/squid.pid
`
magma/squid_cnf/charms/squid/config.yaml
View file @
17583c8b
options
:
image
:
type
:
string
description
:
'
Docker
image
for
squid'
default
:
'
domfleischmann/squid-python'
port
:
type
:
int
description
:
'
Port
'
description
:
"
Port
"
default
:
3128
magma/squid_cnf/charms/squid/dispatch
0 → 100755
View file @
17583c8b
#!/bin/sh
JUJU_DISPATCH_PATH
=
"
${
JUJU_DISPATCH_PATH
:-
$0
}
"
PYTHONPATH
=
lib:venv ./src/charm.py
magma/squid_cnf/charms/squid/hooks/install
View file @
17583c8b
../src/charm.py
\ No newline at end of file
../dispatch
\ No newline at end of file
magma/squid_cnf/charms/squid/hooks/start
0 → 120000
View file @
17583c8b
../dispatch
\ No newline at end of file
magma/squid_cnf/charms/squid/hooks/upgrade-charm
0 → 120000
View file @
17583c8b
../dispatch
\ No newline at end of file
magma/squid_cnf/charms/squid/lib/.empty
deleted
100644 → 0
View file @
e2197769
magma/squid_cnf/charms/squid/lib/ops/__init__.py
deleted
100644 → 0
View file @
e2197769
# Copyright 2020 Canonical Ltd.
#
# 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.
"""The Operator Framework."""
# Import here the bare minimum to break the circular import between modules
from
.
import
charm
# NOQA
magma/squid_cnf/charms/squid/lib/ops/charm.py
deleted
100755 → 0
View file @
e2197769
This diff is collapsed.
Click to expand it.
magma/squid_cnf/charms/squid/lib/ops/log.py
deleted
100644 → 0
View file @
e2197769
# Copyright 2020 Canonical Ltd.
#
# 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
logging
class
JujuLogHandler
(
logging
.
Handler
):
"""A handler for sending logs to Juju via juju-log."""
def
__init__
(
self
,
model_backend
,
level
=
logging
.
DEBUG
):
super
().
__init__
(
level
)
self
.
model_backend
=
model_backend
def
emit
(
self
,
record
):
self
.
model_backend
.
juju_log
(
record
.
levelname
,
self
.
format
(
record
))
def
setup_root_logging
(
model_backend
,
debug
=
False
):
"""Setup python logging to forward messages to juju-log.
By default, logging is set to DEBUG level, and messages will be filtered by Juju.
Charmers can also set their own default log level with::
logging.getLogger().setLevel(logging.INFO)
model_backend -- a ModelBackend to use for juju-log
debug -- if True, write logs to stderr as well as to juju-log.
"""
logger
=
logging
.
getLogger
()
logger
.
setLevel
(
logging
.
DEBUG
)
logger
.
addHandler
(
JujuLogHandler
(
model_backend
))
if
debug
:
handler
=
logging
.
StreamHandler
()
formatter
=
logging
.
Formatter
(
'%(asctime)s %(levelname)-8s %(message)s'
)
handler
.
setFormatter
(
formatter
)
logger
.
addHandler
(
handler
)
magma/squid_cnf/charms/squid/lib/ops/model.py
deleted
100644 → 0
View file @
e2197769
This diff is collapsed.
Click to expand it.
magma/squid_cnf/charms/squid/metadata.yaml
View file @
17583c8b
...
...
@@ -14,10 +14,11 @@ deployment:
type
:
stateful
service
:
loadbalancer
storage
:
docker
:
type
:
filesystem
location
:
/srv/docker/squid
spool
:
type
:
filesystem
location
:
/var/spool/squid
resources
:
image
:
type
:
oci-image
description
:
OSM docker image for LCM
upstream-source
:
"
domfleischmann/squid-python"
\ No newline at end of file
magma/squid_cnf/charms/squid/mod/.empty
deleted
100644 → 0
View file @
e2197769
magma/squid_cnf/charms/squid/mod/operator/.flake8
deleted
100644 → 0
View file @
e2197769
[flake8]
max-line-length = 99
magma/squid_cnf/charms/squid/mod/operator/.gitignore
deleted
100644 → 0
View file @
e2197769
__pycache__
/sandbox
.idea
docs/_build
magma/squid_cnf/charms/squid/mod/operator/.readthedocs.yaml
deleted
100644 → 0
View file @
e2197769
version
:
2
# required
formats
:
[]
# i.e. no extra formats (for now)
python
:
version
:
"
3.5"
install
:
-
requirements
:
docs/requirements.txt
-
requirements
:
requirements.txt
magma/squid_cnf/charms/squid/mod/operator/.travis.yml
deleted
100644 → 0
View file @
e2197769
dist
:
bionic
language
:
python
arch
:
-
amd64
-
arm64
python
:
-
"
3.5"
-
"
3.6"
-
"
3.7"
-
"
3.8"
matrix
:
include
:
-
os
:
osx
language
:
generic
install
:
-
pip3 install pyyaml autopep8 flake8
script
:
-
./run_tests
magma/squid_cnf/charms/squid/mod/operator/README.md
deleted
100644 → 0
View file @
e2197769
# The Operator Framework
The Operator Framework provides a simple, lightweight, and powerful way of encapsulating operational experience in code.
The framework will help you to:
*
model the integration of your services
*
manage the lifecycle of your application
*
create reusable and scalable components
*
keep your code simple and readable
## Getting Started
The following overall structure for your charm directory is recommended:
```
.
├── config.yaml
├── metadata.yaml
├── mod/
├── lib/
│ └── ops -> ../mod/operator/ops
├── src/
│ └── charm.py
└── hooks/
├── install -> ../src/charm.py
└── start -> ../src/charm.py # for k8s charms per below
```
The
`mod/`
directory should contain the operator framework dependency as a git
submodule:
```
git submodule add https://github.com/canonical/operator mod/operator
```
Then symlink from the git submodule for the operator framework into the
`lib/`
directory of your charm so it can be imported at run time:
```
ln -s ../mod/operator/ops lib/ops
```
Other dependencies included as git submodules can be added in the
`mod/`
directory and symlinked into
`lib/`
as well.
You can sync subsequent changes from the framework and other submodule
dependencies by running:
```
git submodule update
```
Those cloning and checking out the source for your charm for the first time
will need to run:
```
git submodule update --init
```
Your
`src/charm.py`
is the entry point for your charm logic. It should be set
to executable and use Python 3.6 or greater. At a minimum, it needs to define
a subclass of
`CharmBase`
and pass that into the framework's
`main`
function:
```
python
import
sys
sys
.
path
.
append
(
'lib'
)
# noqa: E402
from
ops.charm
import
CharmBase
from
ops.main
import
main
class
MyCharm
(
CharmBase
):
pass
if
__name__
==
"__main__"
:
main
(
MyCharm
)
```
This charm does nothing, because the
`MyCharm`
class passed to the operator
framework's
`main`
function is empty. Functionality can be added to the charm
by instructing it to observe particular Juju events when the
`MyCharm`
object
is initialized. For example,
```
python
class
MyCharm
(
CharmBase
):
def
__init__
(
self
,
*
args
):
super
().
__init__
(
*
args
)
self
.
framework
.
observe
(
self
.
on
.
start
,
self
.
on_start
)
def
on_start
(
self
,
event
):
# Handle the start event here.
```
Every standard event in Juju may be observed that way, and you can also easily
define your own events in your custom types.
> The second argument to `observe` can be either the handler as a bound
> method, or the observer itself if the handler is a method of the observer
> that follows the conventional naming pattern. That is, in this case, we
> could have called just `self.framework.observe(self.on.start, self)`.
The
`hooks/`
directory must contain a symlink to your
`src/charm.py`
entry
point so that Juju can call it. You only need to set up the
`hooks/install`
link
(
`hooks/start`
for K8s charms, until
[
lp#1854635
](
https://bugs.launchpad.net/juju/+bug/1854635
)
is resolved), and the framework will create all others at runtime.
Once your charm is ready, upload it to the charm store and deploy it as
normal with:
```
# Replace ${CHARM} with the name of the charm.
charm push . cs:~${USER}/${CHARM}
# Replace ${VERSION} with the version created by `charm push`.
charm release cs:~${USER}/${CHARM}-${VERSION}
charm grant cs:~${USER}/${CHARM}-${VERSION} everyone
# And now deploy your charm.
juju deploy cs:~${USER}/$CHARM
```
Alternatively, to deploy directly from local disk, run:
```
juju deploy .
```
# Operator Framework development
If you want to work in the framework
*itself*
you will need the following depenencies installed in your system:
-
Python >= 3.5
-
PyYAML
-
autopep8
-
flake8
Then you can try
`./run_tests`
, it should all go green.
magma/squid_cnf/charms/squid/mod/operator/build_docs
deleted
100755 → 0
View file @
e2197769
#!/bin/sh
set
-e
flavour
=
html
if
[
"
$1
"
]
;
then
if
[
"
$1
"
=
"--help"
]
||
[
"
$1
"
=
"-h"
]
;
then
flavour
=
help
else
flavour
=
"
$1
"
fi
shift
fi
cd
docs
sphinx-build
-M
"
$flavour
"
.
_build
"
$@
"
magma/squid_cnf/charms/squid/mod/operator/docs/conf.py
deleted
100644 → 0
View file @
e2197769
# Configuration file for the Sphinx documentation builder.
#
# For a full list of options see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html
# -- Path setup --------------------------------------------------------------
from
pathlib
import
Path
import
sys
sys
.
path
.
insert
(
0
,
str
(
Path
(
__file__
).
parent
.
parent
))
# -- Project information -----------------------------------------------------
project
=
'The Operator Framework'
copyright
=
'2019-2020, Canonical Ltd.'
author
=
'Canonical Ltd'
# -- General configuration ---------------------------------------------------
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions
=
[
'sphinx.ext.autodoc'
,
'sphinx.ext.napoleon'
,
'sphinx.ext.todo'
,
'sphinx.ext.viewcode'
,
]
# The document name of the “master” document, that is, the document
# that contains the root toctree directive.
master_doc
=
'index'
# Add any paths that contain templates here, relative to this directory.
templates_path
=
[
'_templates'
]
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns
=
[
'_build'
,
'Thumbs.db'
,
'.DS_Store'
]
# -- Options for HTML output -------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
# html_theme = 'nature' # 'alabaster'
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path
=
[
'_static'
]
# -- Options for sphinx.ext.todo ---------------------------------------------
# If this is True, todo and todolist produce output, else they
# produce nothing. The default is False.
todo_include_todos
=
False
# -- Options for sphinx.ext.autodoc ------------------------------------------
# This value controls how to represents typehints. The setting takes the
# following values:
# 'signature' – Show typehints as its signature (default)
# 'description' – Show typehints as content of function or method
# 'none' – Do not show typehints
autodoc_typehints
=
'description'
# This value selects what content will be inserted into the main body of an
# autoclass directive. The possible values are:
# 'class' - Only the class’ docstring is inserted. This is the
# default. You can still document __init__ as a separate method
# using automethod or the members option to autoclass.
# 'both' - Both the class’ and the __init__ method’s docstring are
# concatenated and inserted.
# 'init' - Only the __init__ method’s docstring is inserted.
autoclass_content
=
'both'
autodoc_default_options
=
{
'members'
:
None
,
# None here means "yes"
'undoc-members'
:
None
,
'show-inheritance'
:
None
,
}
Prev
1
2
3
4
5
…
8
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment