summaryrefslogtreecommitdiff
path: root/gae/webapp/src/endpoint/build_info.py
diff options
context:
space:
mode:
Diffstat (limited to 'gae/webapp/src/endpoint/build_info.py')
-rw-r--r--gae/webapp/src/endpoint/build_info.py78
1 files changed, 49 insertions, 29 deletions
diff --git a/gae/webapp/src/endpoint/build_info.py b/gae/webapp/src/endpoint/build_info.py
index c1dfdb7..0ba77bb 100644
--- a/gae/webapp/src/endpoint/build_info.py
+++ b/gae/webapp/src/endpoint/build_info.py
@@ -11,24 +11,20 @@
# 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.
-
"""Build Info APIs implemented using Google Cloud Endpoints."""
import datetime
import endpoints
import logging
-from protorpc import remote
-
+from webapp.src.endpoint import endpoint_base
from webapp.src.proto import model
-
-BUILD_INFO_RESOURCE = endpoints.ResourceContainer(
- model.BuildInfoMessage)
+BUILD_INFO_RESOURCE = endpoints.ResourceContainer(model.BuildInfoMessage)
-@endpoints.api(name="build_info", version="v1")
-class BuildInfoApi(remote.Service):
+@endpoints.api(name="build", version="v1")
+class BuildInfoApi(endpoint_base.EndpointBase):
"""Endpoint API for build_info."""
@endpoints.method(
@@ -42,34 +38,58 @@ class BuildInfoApi(remote.Service):
build_query = model.BuildModel.query(
model.BuildModel.build_id == request.build_id,
model.BuildModel.build_target == request.build_target,
- model.BuildModel.build_type == request.build_type
- )
+ model.BuildModel.build_type == request.build_type,
+ model.BuildModel.artifact_type == request.artifact_type)
existing_builds = build_query.fetch()
if existing_builds and len(existing_builds) > 1:
- logging.warning("Duplicated builds found for [build_id]{} "
- "[build_target]{} [build_type]{}".format(
- request.build_id, request.build_target, request.build_type))
+ logging.warning(
+ "Duplicated builds found for [build_id]{} "
+ "[build_target]{} [build_type]{} [artifact_type]{}".format(
+ request.build_id, request.build_target, request.build_type,
+ request.artifact_type))
- if request.signed and existing_builds:
- # only signed builds need to overwrite the exist entities.
+ if existing_builds:
build = existing_builds[0]
- elif not existing_builds:
- build = model.BuildModel()
+ if request.signed:
+ # only signed builds need to overwrite the exist entities.
+ build.signed = request.signed
else:
- # the same build existed and request is not signed build.
- build = None
+ build = model.BuildModel()
+ common_attributes = self.GetCommonAttributes(request,
+ model.BuildModel)
+ for attr in common_attributes:
+ setattr(build, attr, getattr(request, attr))
- if build:
- build.manifest_branch = request.manifest_branch
- build.build_id = request.build_id
- build.build_target = request.build_target
- build.build_type = request.build_type
- build.artifact_type = request.artifact_type
- build.artifacts = request.artifacts
- build.timestamp = datetime.datetime.now()
- build.signed = request.signed
- build.put()
+ build.timestamp = datetime.datetime.now()
+ build.put()
return model.DefaultResponse(
return_code=model.ReturnCodeMessage.SUCCESS)
+
+ @endpoints.method(
+ endpoint_base.GET_REQUEST_RESOURCE,
+ model.BuildResponseMessage,
+ path="get",
+ http_method="POST",
+ name="get")
+ def get(self, request):
+ """Gets the builds from datastore."""
+ return_list, more = self.Get(request=request,
+ metaclass=model.BuildModel,
+ message=model.BuildInfoMessage)
+ return model.BuildResponseMessage(builds=return_list, has_next=more)
+
+ @endpoints.method(
+ endpoint_base.COUNT_REQUEST_RESOURCE,
+ model.CountResponseMessage,
+ path="count",
+ http_method="POST",
+ name="count")
+ def count(self, request):
+ """Gets total number of BuildModel entities stored in datastore."""
+ filters = self.CreateFilterList(
+ filter_string=request.filter, metaclass=model.BuildModel)
+ count = self.Count(metaclass=model.BuildModel, filters=filters)
+
+ return model.CountResponseMessage(count=count)