本文整理汇总了Python中service.tasks.machine.start_machine_imaging函数的典型用法代码示例。如果您正苦于以下问题:Python start_machine_imaging函数的具体用法?Python start_machine_imaging怎么用?Python start_machine_imaging使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了start_machine_imaging函数的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: post
def post(self, request, provider_id, identity_id):
"""
Sends an e-mail to the admins to start
the create_image process.
"""
#request.DATA is r/o
#Copy allows for editing
data = copy.deepcopy(request.DATA)
data.update({'owner': data.get('created_for', request.user.username)})
if data.get('vis','public') != 'public':
user_list = re.split(', | |\n', data.get('shared_with',""))
share_with_admins(user_list, data.get('provider'))
share_with_self(user_list, request.user.username)
user_list = [user for user in user_list if user] # Skips blanks
data['shared_with'] = user_list
logger.info(data)
serializer = MachineRequestSerializer(data=data)
if serializer.is_valid():
#Add parent machine to request
machine_request = serializer.object
machine_request.parent_machine = machine_request.instance.provider_machine
serializer.save()
#Object now has an ID for links..
machine_request_id = serializer.object.id
active_provider = machine_request.active_provider()
auto_approve = active_provider.has_trait("Auto-Imaging")
requestImaging(request, machine_request_id,
auto_approve=auto_approve)
if auto_approve:
start_machine_imaging(machine_request)
return Response(serializer.data,
status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors,
status=status.HTTP_400_BAD_REQUEST)
示例2: get
def get(self, request,
machine_request_id, action=None):
"""
OPT 1 for approval: via GET with /approve or /deny
This is a convenient way to approve requests remotely
"""
user = request.user
try:
machine_request = CoreMachineRequest.objects.get(
instance__source__provider__cloudadministrator__user=user,
id=machine_request_id)
except CoreMachineRequest.DoesNotExist:
return Response('No machine request with id %s'
% machine_request_id,
status=status.HTTP_404_NOT_FOUND)
if not action:
serializer = MachineRequestSerializer(machine_request)
return Response(serializer.data, status=status.HTTP_200_OK)
# Don't update the request unless its pending or error
# Otherwise use the existing status to 'start machine imaging'
if machine_request.status in ['error', 'pending']:
machine_request.status = action
machine_request.save()
# Only run task if status is 'approve'
if machine_request.status == 'approve':
start_machine_imaging(machine_request)
serializer = MachineRequestSerializer(machine_request)
return Response(serializer.data, status=status.HTTP_200_OK)
示例3: get
def get(self, request, machine_request_id, action=None):
"""
OPT 1 for approval: via GET with /approve or /deny
This is a convenient way to approve requests remotely
"""
if not request.user.is_staff:
raise NotAuthenticated("Must be a staff user to view requests "
"directly")
try:
machine_request = CoreMachineRequest.objects.get(
id=machine_request_id)
except CoreMachineRequest.DoesNotExist:
return Response('No machine request with id %s'
% machine_request_id,
status=status.HTTP_404_NOT_FOUND)
serializer = MachineRequestSerializer(machine_request)
if not action:
return Response(serializer.data, status=status.HTTP_200_OK)
machine_request = serializer.object
#Don't update the request unless its pending
if machine_request.status in ['error','pending']:
machine_request.status = action
machine_request.save()
#Only run task if status is 'approve'
if machine_request.status == 'approve':
start_machine_imaging(machine_request)
serializer = MachineRequestSerializer(machine_request)
return Response(serializer.data, status=status.HTTP_200_OK)
示例4: patch
def patch(self, request, machine_request_id, action=None):
"""
OPT2 for approval: sending a PATCH to the machine request with
{"status":"approve/deny"}
Modfiy attributes on a machine request
"""
if not request.user.is_staff:
raise NotAuthenticated("Must be a staff user to view requests "
"directly")
try:
machine_request = CoreMachineRequest.objects.get(
id=machine_request_id)
except CoreMachineRequest.DoesNotExist:
return Response('No machine request with id %s'
% machine_request_id,
status=status.HTTP_404_NOT_FOUND)
data = request.DATA
serializer = MachineRequestSerializer(machine_request, data=data,
partial=True)
if serializer.is_valid():
#Only run task if status is 'approve'
if machine_request.status == 'approve':
start_machine_imaging(machine_request)
machine_request.save()
#Object may have changed
serializer = MachineRequestSerializer(machine_request)
return Response(serializer.data, status=status.HTTP_200_OK)
示例5: put
def put(self, request, provider_uuid, identity_uuid, machine_request_id):
"""
Authentication Required, update information on a pending request.
"""
# Meta data changes in 'pending' are OK
# Status change 'pending' --> 'cancel' are OK
data = request.DATA
try:
machine_request = CoreMachineRequest.objects.get(
id=machine_request_id)
except CoreMachineRequest.DoesNotExist:
return Response('No machine request with id %s'
% machine_request_id,
status=status.HTTP_404_NOT_FOUND)
serializer = MachineRequestSerializer(machine_request,
data=data, partial=True)
if serializer.is_valid():
# Only run task if status is 'approve'
machine_request = serializer.object
if machine_request.status == 'approve':
start_machine_imaging(machine_request)
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
示例6: _create_image
def _create_image(self, request, provider_uuid, identity_uuid):
_permission_to_act(identity_uuid, "Imaging")
# request.DATA is r/o
# Copy allows for editing
data = copy.deepcopy(request.DATA)
data.update({'owner': data.get('created_for', request.user.username)})
if data.get('vis', 'public') != 'public':
user_list = data.get('shared_with', '')
if type(user_list) == str:
user_list = re.split(', | |\n', user_list)
share_with_admins(user_list, data.get('provider'))
share_with_self(user_list, request.user.username)
user_list = [user for user in user_list if user] # Skips blanks
# TODO: Remove duplicates as well..
data['shared_with'] = user_list
logger.info(data)
serializer = MachineRequestSerializer(data=data)
if serializer.is_valid():
# Add parent machine to request
instance = serializer.validated_data['instance']
parent_machine = instance.source.providermachine
serializer.validated_data['parent_machine'] = parent_machine
user = serializer.validated_data['new_machine_owner']
identity_member = IdentityMembership.objects.get(
identity__provider=serializer.validated_data['new_machine_provider'],
identity__created_by=user)
serializer.validated_data['membership'] = identity_member
serializer.validated_data['created_by'] = user
self._permission_to_image(identity_uuid, instance)
machine_request = serializer.save()
instance = machine_request.instance
# NOTE: THIS IS A HACK -- While we enforce all images
# to go to iPlant Cloud - Tucson.
# THIS CODE SHOULD BE REMOVED
try:
tucson_provider = Provider.objects.get(
location='iPlant Cloud - Tucson')
if machine_request.new_machine_provider.location\
!= tucson_provider.location:
machine_request.new_machine_provider = tucson_provider
except:
# Will skip this step if no provider is named
# iPlant Cloud - Tucson.
pass
serializer.save()
# Object now has an ID for links..
machine_request_id = machine_request.id
active_provider = machine_request.active_provider()
auto_approve = active_provider.auto_imaging
requestImaging(request, machine_request_id,
auto_approve=auto_approve)
if auto_approve:
start_machine_imaging(machine_request)
return Response(serializer.data,
status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors,
status=status.HTTP_400_BAD_REQUEST)
示例7: _create_image
def _create_image(self, request, provider_uuid, identity_uuid):
_permission_to_act(identity_uuid, "Imaging")
# request.data is r/o
# Copy allows for editing
data = copy.deepcopy(request.data)
data.update({'owner': data.get('created_for', request.user.username)})
if data.get('vis', 'public') != 'public':
user_list = data.get('shared_with', '')
if type(user_list) == str:
user_list = re.split(', | |\n', user_list)
share_with_admins(user_list, data.get('provider'))
share_with_self(user_list, request.user.username)
user_list = [user for user in user_list if user] # Skips blanks
# TODO: Remove duplicates as well..
data['shared_with'] = user_list
logger.info(data)
serializer = MachineRequestSerializer(data=data)
if serializer.is_valid():
# Add parent machine to request
instance = serializer.validated_data['instance']
parent_machine = instance.source.providermachine
serializer.validated_data['parent_machine'] = parent_machine
user = serializer.validated_data['new_machine_owner']
identity_member = IdentityMembership.objects.get(
identity__provider=serializer.
validated_data['new_machine_provider'],
identity__created_by=user
)
serializer.validated_data['membership'] = identity_member
serializer.validated_data['created_by'] = user
self._permission_to_image(identity_uuid, instance)
pending_status, _ = StatusType.objects.get_or_create(name='pending')
machine_request = serializer.save(status=pending_status)
instance = machine_request.instance
if getattr(settings, 'REPLICATION_PROVIDER_LOCATION'):
try:
replication_provider = Provider.objects.get(
location=settings.REPLICATION_PROVIDER_LOCATION
)
if machine_request.new_machine_provider.location\
!= replication_provider.location:
machine_request.new_machine_provider = replication_provider
except:
# Will skip this step if no provider is named
# as the REPLICATION_PROVIDER_LOCATION
pass
# Object now has an ID for links..
machine_request_id = machine_request.id
active_provider = machine_request.active_provider()
auto_approve = active_provider.auto_imaging
requestImaging(
request, machine_request_id, auto_approve=auto_approve
)
if auto_approve:
start_machine_imaging(machine_request)
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return bad_request(serializer.errors, prefix="Invalid value for ")
示例8: patch
def patch(self, request, cloud_admin_uuid, machine_request_id, action=None):
"""
OPT2 for approval: sending a PATCH to the machine request with
{"status":"approve/deny"}
Modfiy attributes on a machine request
"""
user = request.user
try:
machine_request = CoreMachineRequest.objects.get(
instance__source__provider__cloudadministrator__user=user,
id=machine_request_id
)
except CoreMachineRequest.DoesNotExist:
return Response(
'No machine request with id %s' % machine_request_id,
status=status.HTTP_404_NOT_FOUND
)
data = request.data
# Behavior will remove 'status' if its being updated.
# Status should only be updated if denied or skipped.
# Status of 'approve','continue' will use the machine_request.status
# to allow restarting the request at the correct point in time.
start_request = False
if 'status' in data:
_status = data['status'].lower()
if machine_request.old_status == 'completed':
return Response(
"Cannot update status of 'completed' request",
status=status.HTTP_409_conflict
)
elif _status in ['approve', 'continue']:
data.pop('status')
start_request = True
elif _status not in ['deny', 'skip']:
return Response(
"Bad Status Value: %s. "
"Available choices for a status update are: "
"approve, continue, deny, skip"
)
serializer = MachineRequestSerializer(
machine_request, data=data, partial=True
)
if not serializer.is_valid():
return Response(
serializer.errors, status=status.HTTP_400_BAD_REQUEST
)
# Only run task if status is 'approve'
machine_request = serializer.save()
mr_data = serializer.data
if start_request:
start_machine_imaging(machine_request)
return Response(mr_data, status=status.HTTP_200_OK)
示例9: _create_image
def _create_image(self, request, provider_uuid, identity_uuid):
_permission_to_act(identity_uuid, "Imaging")
#request.DATA is r/o
#Copy allows for editing
data = copy.deepcopy(request.DATA)
data.update({'owner': data.get('created_for', request.user.username)})
if data.get('vis','public') != 'public':
user_list = re.split(', | |\n', data.get('shared_with',""))
share_with_admins(user_list, data.get('provider'))
share_with_self(user_list, request.user.username)
user_list = [user for user in user_list if user] # Skips blanks
#TODO: Remove duplicates as well..
data['shared_with'] = user_list
logger.info(data)
serializer = MachineRequestSerializer(data=data)
if serializer.is_valid():
#Add parent machine to request
machine_request = serializer.object
instance = machine_request.instance
if instance.source.is_machine():
machine_request.parent_machine = machine_request.instance\
.source.providermachine
elif instance.source.is_volume():
raise Exception(
"Instance of booted volume can NOT be imaged."
"Contact your Administrator for more information.")
else:
raise Exception(
"Instance source type cannot be determined."
"Contact your Administrator for more information.")
#NOTE: THIS IS A HACK -- While we enforce all images to go to iPlant Cloud - Tucson.
# THIS CODE SHOULD BE REMOVED
try:
tucson_provider = Provider.objects.get(location='iPlant Cloud - Tucson')
if machine_request.new_machine_provider.location != tucson_provider.location:
machine_request.new_machine_provider = tucson_provider
except:
pass
serializer.save()
#Object now has an ID for links..
machine_request_id = serializer.object.id
active_provider = machine_request.active_provider()
auto_approve = active_provider.auto_imaging
requestImaging(request, machine_request_id,
auto_approve=auto_approve)
if auto_approve:
start_machine_imaging(machine_request)
return Response(serializer.data,
status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors,
status=status.HTTP_400_BAD_REQUEST)
示例10: submit_action
def submit_action(self, instance):
"""
Submits a resource request email
"""
provider = instance.active_provider()
pre_approved = provider.auto_imaging
requestImaging(self.request, instance.id, auto_approve=pre_approved)
if pre_approved:
status, _ = StatusType.objects.get_or_create(name="approved")
instance.status = status
instance.save()
start_machine_imaging(instance)
示例11: submit_action
def submit_action(self, instance):
"""
Submits a resource request email
"""
#NOTE/FIXME: This should be considered when locking down "Imaging Strategy" for a "Provider Grouping"
new_provider = self._get_new_provider()
pre_approved = new_provider.auto_imaging
requestImaging(self.request, instance.id, auto_approve=pre_approved)
if pre_approved:
status, _ = StatusType.objects.get_or_create(name="approved")
instance.status = status
instance.save()
start_machine_imaging(instance)
示例12: patch
def patch(self, request, provider_id, identity_id, machine_request_id):
"""
Meta data changes in 'pending' are OK
Status change 'pending' --> 'cancel' are OK
All other changes should FAIL
"""
data = request.DATA
try:
machine_request = CoreMachineRequest.objects.get(id=machine_request_id)
except CoreMachineRequest.DoesNotExist:
return Response("No machine request with id %s" % machine_request_id, status=status.HTTP_404_NOT_FOUND)
serializer = MachineRequestSerializer(machine_request, data=data, partial=True)
if serializer.is_valid():
machine_request = serializer.object
if machine_request.status == "approve":
start_machine_imaging(machine_request)
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
示例13: approve_action
def approve_action(self, instance):
"""
Updates the resource for the request
"""
start_machine_imaging(instance)