class RookEnv(object):
def __init__(self):
# POD_NAMESPACE already exist for Rook 0.9
- pod_namespace = os.environ.get('POD_NAMESPACE', 'rook-ceph')
- self.cluster_ns = os.environ.get('ROOK_CLUSTER_NS', pod_namespace)
+ self.namespace = os.environ.get('POD_NAMESPACE', 'rook-ceph')
- # ROOK_CLUSTER_NAME was a previously used env var name.
- rook_cluster_name = os.environ.get('ROOK_CLUSTER_NAME', pod_namespace)
# ROOK_CEPH_CLUSTER_CRD_NAME is new is Rook 1.0
- self.cluster_name = os.environ.get('ROOK_CEPH_CLUSTER_CRD_NAME', rook_cluster_name)
+ self.cluster_name = os.environ.get('ROOK_CEPH_CLUSTER_CRD_NAME', self.namespace)
- self.operator_ns = os.environ.get('ROOK_OPERATOR_NAMESPACE', "rook-ceph-system")
+ self.operator_namespace = os.environ.get('ROOK_OPERATOR_NAMESPACE', "rook-ceph-system")
self.crd_version = os.environ.get('ROOK_CEPH_CLUSTER_CRD_VERSION', 'v1')
self.api_name = "ceph.rook.io/" + self.crd_version
def api_version_match(self):
return self.crd_version == 'v1'
+ def has_namespace(self):
+ return 'POD_NAMESPACE' in os.environ
+
class RookOrchestrator(MgrModule, orchestrator.Orchestrator):
MODULE_OPTIONS = [
def available(self):
if not kubernetes_imported:
return False, "`kubernetes` python module not found"
- elif not self._rook_env.cluster_ns:
+ elif not self._rook_env.has_namespace():
return False, "ceph-mgr not running in Rook cluster"
try:
def is_complete():
# Find OSD pods on this host
pod_osd_ids = set()
- pods = self._k8s.list_namespaced_pod(self._rook_env.cluster_ns,
+ pods = self._k8s.list_namespaced_pod(self._rook_env.namespace,
label_selector="rook_cluster={},app=rook-ceph-osd".format(self._rook_env.cluster_name),
field_selector="spec.nodeName={0}".format(
drive_group.hosts(all_hosts)[0]
def rook_url(self, path):
prefix = "/apis/ceph.rook.io/%s/namespaces/%s/" % (
- self.rook_env.crd_version, self.rook_env.cluster_ns)
+ self.rook_env.crd_version, self.rook_env.namespace)
return urljoin(prefix, path)
def rook_api_call(self, verb, path, **kwargs):
try:
result = self.k8s.list_namespaced_config_map(
- self.rook_env.operator_ns,
+ self.rook_env.operator_namespace,
label_selector=label_selector)
except ApiException as e:
log.exception("Failed to fetch device metadata: {0}".format(e))
field_filter = "spec.nodeName={0}".format(nodename)
pods = self.k8s.list_namespaced_pod(
- self.rook_env.cluster_ns,
+ self.rook_env.namespace,
label_selector=label_filter,
field_selector=field_filter)
"kind": "CephFilesystem",
"metadata": {
"name": spec.name,
- "namespace": self.rook_env.cluster_ns
+ "namespace": self.rook_env.namespace
},
"spec": {
"onlyManageDaemons": True,
"kind": "CephNFS",
"metadata": {
"name": spec.name,
- "namespace": self.rook_env.cluster_ns
+ "namespace": self.rook_env.namespace
},
"spec": {
"rados": {
"kind": "CephObjectStore",
"metadata": {
"name": spec.name,
- "namespace": self.rook_env.cluster_ns
+ "namespace": self.rook_env.namespace
},
"spec": {
"metaDataPool": {