Revision ccc5048f snf-astakos-app/astakos/im/register.py
b/snf-astakos-app/astakos/im/register.py | ||
---|---|---|
45 | 45 |
pass |
46 | 46 |
|
47 | 47 |
|
48 |
def different_component(service, resource): |
|
49 |
try: |
|
50 |
registered_for = Service.objects.get(name=resource.service_origin) |
|
51 |
return registered_for.component != service.component |
|
52 |
except Service.DoesNotExist: |
|
53 |
return False |
|
54 |
|
|
55 |
|
|
48 | 56 |
def add_resource(resource_dict): |
49 | 57 |
name = resource_dict.get('name') |
50 | 58 |
service_type = resource_dict.get('service_type') |
... | ... | |
53 | 61 |
raise RegisterException("Malformed resource dict.") |
54 | 62 |
|
55 | 63 |
try: |
56 |
Service.objects.get(name=service_origin) |
|
64 |
service = Service.objects.get(name=service_origin)
|
|
57 | 65 |
except Service.DoesNotExist: |
58 | 66 |
m = "There is no service %s." % service_origin |
59 | 67 |
raise RegisterException(m) |
... | ... | |
61 | 69 |
try: |
62 | 70 |
r = Resource.objects.get_for_update(name=name) |
63 | 71 |
exists = True |
64 |
if r.service_type != service_type: |
|
72 |
if r.service_type != service_type and \ |
|
73 |
different_component(service, r): |
|
65 | 74 |
m = ("There already exists a resource named %s with service " |
66 | 75 |
"type %s." % (name, r.service_type)) |
67 | 76 |
raise RegisterException(m) |
68 |
if r.service_origin != service_origin: |
|
77 |
if r.service_origin != service_origin and \ |
|
78 |
different_component(service, r): |
|
69 | 79 |
m = ("There already exists a resource named %s registered for " |
70 | 80 |
"service %s." % (name, r.service_origin)) |
71 | 81 |
raise RegisterException(m) |
72 |
|
|
82 |
r.service_origin = service_origin |
|
83 |
r.service_type = service_type |
|
73 | 84 |
except Resource.DoesNotExist: |
74 | 85 |
r = Resource(name=name, |
75 | 86 |
uplimit=0, |
Also available in: Unified diff